<?php

/**
 * Class Option_Model
 */
class Option_Model extends CI_Model
{
    /**
     *
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * @param string $key
     * @param string $default
     * @return string
     */
    public static function getOption($key, $default = null)
    {
        /** @var CI $CI */
        $CI =& get_instance();
        $CI->db->select('option.value');
        $CI->db->from('option');
        $CI->db->where('option.key', $key);

        $query = $CI->db->get();
        $row   = $query->row();
        if ($row)
            return $row->value;
        else
            return $default;
    }

    /**
     * @param string $key
     * @param string $value
     * @return string
     */
    public static function updateOption($key, $value)
    {
        /** @var CI $CI */
        $CI =& get_instance();

        if (self::isKeyExist($key)) {
            $CI->db->where('key', $key);
            $result = $CI->db->update('option', array('value' => $value));
        } else {
            $result = $CI->db->insert('option', array('key' => $key, 'value' => $value));
        }

        return $result;
    }

    /**
     * @param string $key
     * @return bool
     */
    public static function deleteOption($key)
    {
        /** @var CI $CI */
        $CI =& get_instance();

        $CI->db->where('key', $key);
        $result = $CI->db->delete('option');
        if ($result)
            return true;
        else
            return false;
    }

    /**
     * @param $key
     * @return bool
     */
    public static function isKeyExist($key)
    {
        /** @var CI $CI */
        $CI =& get_instance();

        $CI->db->select('option.id');
        $CI->db->from('option');
        $CI->db->where('key', $key);
        if ($CI->db->get()->num_rows())
            return true;
        else
            return false;
    }
}
